#include <algorithm>
#include <cstdio>

const int N = 5005;
unsigned n, ans, x[N], buk[N];

int main() {
#ifndef ONLINE_JUDGE
#ifdef LOCAL
  freopen("testdata.in", "r", stdin);
  freopen("testdata.out", "w", stdout);
#else
  freopen("box.in", "r", stdin);
  freopen("box.out", "w", stdout);
#endif
#endif

  scanf("%u", &n);
  for (register unsigned *i = x + 1, *end = x + n + 1; i != end; ++i) { scanf("%u", i); }
  std::sort(x + 1, x + n + 1);
  for (register unsigned *i = x + 1, tar, *end = x + n + 1; i != end; ++i) {
    tar = 0;
    for (register unsigned j = 1; j <= ans; ++j)
      if (buk[j] <= *i && buk[j] > buk[tar]) { tar = j; }
    if (!tar) buk[++ans] = 1;
    else
      buk[tar]++;
  }
  printf("%u", ans);
  return 0;
}